iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
自我挑戰組

連續30天 初學者介紹Scala語言系列 第 8

[Day 08]Scala 類別與物件 Part 1

  • 分享至 

  • xImage
  •  

今天來談Scala的類別是如何操作的
首先我們來定義一個類別

class Person(val name: String, age: Int){ //Constructor
}

定義好之後就可以用new關鍵字創建物件

val person = new Person("Leonad", 25)
println(person.age)    //輸出person的年齡

繼續定義剛剛的class

val person = new Person("Leonard", 25)
println(person.age) 
person.greet("Sheldon")
person.greet()

//Constructor
class Person(name: String, val age: Int){ 
    //body
    val x = 2
    
    //method
    def greet(name: String): Unit = println(s"${this.name}: Hi $name!")
    
    //overloading
    def greet(): Unit = println(s"Hi, i am $name")
}

來講解一下
在一個類別定義中,我們會填入field和method(方法),這些被統稱為member(成員)。
field:也就是我們用valvar來定義的跟物件有關的變數。
method:用def定義,裡頭包含可執行的程式。

藉由上面的code,我們來介紹overloading
Overloading簡單來說就是當我們用相同名稱不同型別來定義方法。
所以兩個greet方法的output分別會長這樣:

25
Leonard: Hi Sheldon
Leonard

解釋一下兩個greet方法的差別
第一個greet,假設我們把println裡的${this.name}改成$name,即
def greet(name: String): Unit = println(s"${this.name}: Hi $name!")
這時輸出會長這樣:

Sheldon: Hi Sheldon

但是我們加了this之後,這個this.name就會變成class Person的name參數
第二個greet
雖然我們沒有明確寫出this.name但程式會默認為這個Person類別的field。

Part1就先講到這邊
/images/emoticon/emoticon29.gif


上一篇
[Day 07]Scala內建結構 Part 2
下一篇
[Day 09]Scala 類別與物件 Part 2
系列文
連續30天 初學者介紹Scala語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言